java JSON解析嵌套数组对象
在以下JSON格式的文件上使用Simple-JSON,我在理解如何在“name”下访问数组中的对象时遇到了很多困难
JSON文件:
[
{
"name":{
"firstName": "Developer",
"lastName": "D"
},
"id": 00,
"permissionLevel": 3,
"password": 12345
},
{
"name":{
"firstName": "Bob",
"lastName": "Smith"
},
"id": 01,
"permissionLevel": 2,
"password": 23456
}
]
我能够获得所有其他内容的信息,因为它们不位于嵌套数组中;但是,当我尝试检索“name”下的对象时,输出的只是JSON文件中的字符串
当前代码:
String[] searchData = {
"name",
"firstName",
"lastName",
"id",
"permissionLevel",
"password"
};
jsonArray = (JSONArray)new JSONParser().parse(s);
for(int i = 0; i < jsonArray.size(); i++){
JSONObject jo = (JSONObject)jsonArray.get(i);
for(int j = 0; j < searchData.length; j++){
System.out.println(
searchData[j] + ": " + jo.get(searchData[j]));
}
}
输出:
name: [{"firstName":"Developer","lastName":"D"}]
firstName: null
lastName: null
id: 0
permissionLevel: 3
password: 12345
name: [{"firstName":"Bob","lastName":"Smith"}]
firstName: null
lastName: null
id: 1
permissionLevel: 2
password: 23456
如您所见,“name”从JSON文件输出一个字符串,而不是每个单独的值
最后,我需要编写一个通用代码,可以为输入的每个文件接受新的“searchData”标记
- 有人能告诉我如何获得持有的物品吗 在嵌套数组中李>
- 或者我需要使用不同的库?如果是的话,哪一个对Java最有效?我不是在为Android编程,我不断地为Android寻找库建议李>
如果这篇文章是一个骗局,我很抱歉,但是没有其他的文章可以帮助我
# 1 楼答案
您应该获得
firstname
和lastname
,如:# 2 楼答案
要获取嵌套数组/对象中的对象,必须编写递归方法并将结构展平到映射中。下面的示例显示了相同的情况:
您可以调整此方法,使其具有像name这样的键。名字或名字。lastname取决于需求
# 3 楼答案
我知道您希望在解析
JSON
时考虑searchData
标记。我建议在这种情况下使用Google Gson
您可以编写一个POJO,返回JSON的
ArrayList<User>
请参阅关于how use Google Gson的这篇文章